/**
 * 
 */
package org.softTank.BpelTranslator.Impl;

import java.util.List;

import javax.xml.namespace.QName;

import org.softTank.BcpModel.BcpPartnerLink;
import org.softTank.BpelModel.TImport;
import org.softTank.BpelModel.TPartnerLink;
import org.softTank.BpelModel.TPartnerLinks;
import org.softTank.BpelTranslator.ImportParser;
import org.softTank.BpelTranslator.PartnerLinkParser;

/**
 * @author Yuzone
 * 
 */
public class PartnerLinkParserImpl implements PartnerLinkParser {

	private ImportParser importParser;

	public PartnerLinkParserImpl() {
	}

	public PartnerLinkParserImpl(ImportParser value) {
		this.importParser = value;
	}

	public ImportParser getImportParser() {
		return importParser;
	}

	public void setImportParser(ImportParser importParser) {
		this.importParser = importParser;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * org.softTank.BpelTranslator.PartnerLinkParser#parsePartnerLink(java.util
	 * .List, org.softTank.BpelModel.TPartnerLinks)
	 */
	@Override
	public TPartnerLinks parsePartnerLink(List<BcpPartnerLink> value,
			List<TImport> imports) {
		TPartnerLinks partnerLinks = new TPartnerLinks();
		if (value == null)
			return partnerLinks;
		if (value.size() == 0)
			return partnerLinks;
		for (int n = 0; n < value.size(); n++) {
			BcpPartnerLink bpl = value.get(n);
			if (importParser != null) {
				importParser.saveOrUpdateImportList(bpl, imports);
			}
			TPartnerLink pl = new TPartnerLink();
			pl.setMyRole(bpl.getMyRole());
			pl.setPartnerRole(bpl.getPartnerRole());
			pl.setPartnerLinkType(new QName(bpl.getPartnerLinkType()
					.getTargetNamespace(), bpl.getPartnerLinkType().getName()
					.getLocalPart()));
			pl.setName(bpl.getName());
			if (bpl.getName() == null) {
				pl.setName("partnerLink" + n);
			}
			partnerLinks.getPartnerLink().add(pl);
		}
		return partnerLinks;
	}

}
